<?php

/**
 * login actions.
 *
 * @package    g2t
 * @subpackage login
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class loginActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    //$this->forward('default', 'module');
  }
  
  public function interpretarRolUsuario()
  {      
        $datos=$this->getUser()->getAttribute('datos');
        $rolUsuario=$datos["rolUsuario"];
        
        
        switch($rolUsuario)
	{
		case "m" : {$rol="Administrador";  break;}
		case "a" : {$rol="Anotador";  break;}
		case "j" : {$rol="Juez";  break;}
		case "o" : {$rol="Organizador"; break;}
                
	}	
        
        return $rol;
  }
  
  public function loginJuez($loggin, $contrasena)
  {
      $rolesJueces=Doctrine::getTable('rolUsuario_Juez')->createQuery()->where('nicknameJuez=?',$loggin)->execute();
       if(count($rolesJueces)==0)
      {                    
          return false;
      }
      
      foreach($rolesJueces as $rolJuez)
      {                        
         
          if($contrasena==$rolJuez->getContrasenia())
          {
              $this->getUser()->setAuthenticated(true);
              $rolUsuario=  $rolJuez->getRolUsuario()->getNombreRolUsuario();
              $this->getUser()->setAttribute('datos', array("rolUsuario" => $rolUsuario,
                                                            "nombUsuario"=> $rolJuez->getJuez()->getNombrejuez()));
              $this->getUser()->setAttribute('idJuez', $rolJuez->getJuez()->getIdjuez());
              
              return true;
          }
          else
          {     return false;}
          
          
      } 
      
      
  }
  
  
  public function executeLoggin(sfWebRequest $request)
  {
      
      $nombUsuario=$request->getPostParameter("nombUsuario");

      
      $usuarios=Doctrine::getTable('usuario')->createQuery()->where('logginusuario=?',$nombUsuario)->execute();
      $contraseniaIngresada=md5($request->getPostParameter("contrasenia"));
      if(count($usuarios)==0)
      {          
          if(!$this->loginJuez($nombUsuario,$contraseniaIngresada))
          return $this->renderText("{success: false,
                                        errors: {title: 'Falló Autenticación', reason: 'Nombre de usuario y/o contraseña incorrecta.'}}");
          
          else {
                $datosJuez=$this->getUser()->getAttribute('datos');
                $nomJuez=$datosJuez['nombUsuario'];
                return $this->renderText("{success: true, info: {rolUsuario: '".$this->interpretarRolUsuario()."', nombUsuario: '".$nomJuez."'}}");  
                }
      }
      
      foreach($usuarios as $usuario)
      {                        
          
          if($contraseniaIngresada==$usuario->getContraseniausuario())
          {
              $this->getUser()->setAuthenticated(true);
              $rolUsuario=  $usuario->getRolUsuario()->getNombreRolUsuario();
              $this->getUser()->setAttribute('datos', array("rolUsuario" => $rolUsuario,
                                                            "nombUsuario"=> $usuario->getNombreUsuario()));
              
              
              return $this->renderText("{success: true, info: {rolUsuario: '".$this->interpretarRolUsuario()."', nombUsuario: '".$usuario->getNombreUsuario()."'}}");
          }
          else
          {              
                return $this->renderText("{success: false,
                                        errors: {title: 'Falló Autenticación', reason: 'Nombre de usuario  y/o contraseña incorrecta.'}}");
            }
          
          
      }     
      
  }
  
   public function crearNodosTree($text, $id, $childrens,$leaf=false,$expanded=true, $draggable=false )
    {          
       
            $nodo=array('text' => $text, 
            'id'=> $id,
            'leaf'=> $leaf,
            'expanded'=> $expanded, 
            'draggable'=> $draggable);
            
            if($childrens!="")
            {
                $nodo['children']=$childrens;
                
            }

            return $nodo;
    }
  
  
    public function crearMenuJuezSilla()
    {
        $partidosPend=$this->crearNodosTree("Partidos Pendientes","partsPendJuezSilla","",true,true,false);
        $MenuUsuarios=array($partidosPend);
        
        return $MenuUsuarios;
    }
    
      public function crearMenuInvitado()
    {
          
          $gestionarJugador=$this->crearNodosTree("Consultar Jugadores","gestionJugadores","",true,true,false);
          $gestionarJuez=$this->crearNodosTree("Consultar Jueces","gestionJueces","",true,true,false);
          $gestionarCanchas=$this->crearNodosTree("Consultar Canchas","gestionCanchas","",true,true,false);
          $gestionarTorneos=$this->crearNodosTree("Consultar Torneos","gestionTorneos","",true,true,false);
          $MenuUsuarios=array($gestionarJugador,$gestionarJuez,$gestionarCanchas,$gestionarTorneos);
          
                return $MenuUsuarios;
          
    }
    
  public function crearMenuManager()
  {
		//$menu="{";
                
		
		//$consultarUsuarios=$this->crearNodosTree("Consultar Usuarios","consulUsuario","",true,true,false);
		$gestionarUsuario=$this->crearNodosTree("Gestionar Usuarios","gestionUsuarios","",true,true,false);
                $gestionarJugador=$this->crearNodosTree("Gestionar Jugadores","gestionJugadores","",true,true,false);
                $gestionarJuez=$this->crearNodosTree("Gestionar Jueces","gestionJueces","",true,true,false);
                $gestionarCanchas=$this->crearNodosTree("Gestionar Canchas","gestionCanchas","",true,true,false);
                $gestionarTorneos=$this->crearNodosTree("Gestionar Torneos","gestionTorneos","",true,true,false);
		//$MenuUsuarios=$this->crearNodosTree("Gestionar Usuarios","nodeGestionUsuario",array($gestionarUsuario,$gestionarJugador),false,true,false);
                
                //$partidosPend=$this->crearNodosTree("Partidos Pendientes","partsPendJuezSilla","",true,true,false);
                
		$MenuUsuarios=array($gestionarUsuario,$gestionarJugador,$gestionarJuez,$gestionarCanchas,$gestionarTorneos);
		/*$menu.=$MenuUsuarios;
		$menu.="}";*/
                
                return $MenuUsuarios;
  }        
  
  
  
  
  public function executeCargarMenu(sfWebRequest $request)
  {
        $rolUsuario="";
        if($this->getUser()->isAuthenticated())
        {
            $datos=$this->getUser()->getAttribute('datos');
            $rolUsuario=$datos["rolUsuario"];
        }
        
        
	$menu;
        
	switch($rolUsuario)
	{
		case "m" : {$menu=$this->crearMenuManager();  break;}
		case "a" : {$menu=$this->crearMenuManager();  break;}
		case "j" : {$menu=$this->crearMenuJuezSilla();  break;}
		case "o" : {$menu=$this->crearMenuManager();  break;}
                default: {$menu=$this->crearMenuInvitado();  break;}
	}	
        
        return $this->renderText(json_encode($menu));
  } 
  
}
